﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Sistema_Totem.Logica.Clases;
using Sistema_Totem.Datos.SqlServer;

namespace Sistema_Totem.Pruebas
{
    /// <summary>
    /// Etiqueta a la clase para casos de prueba.
    /// </summary>
    [TestFixture]
    public class PruebaSqlRol
    {
        #region Prueba Unitaria Agregar Rol
        /// <summary>
        /// Prueba que valida que el Rol
        /// se crea correctamente.
        /// </summary>
        [TestCase]
        public void AgregarRol()
        {
            string nombreRol = "Gerente de Proyecto";
            string tipoRol = "Equipo de Trabajo";
            string descripcionRol = "Se encarga de todas las responsabilidades del Proyecto.";
            bool retorno = true;

            Rol rol = new Rol(nombreRol,tipoRol,descripcionRol);
            SqlServerRol serverRol = new SqlServerRol();
            retorno = serverRol.AgregarRol(rol);

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(rol.Nombre);
            Assert.IsNotNull(rol.TipoRol);
            Assert.IsNotNull(rol.Descripcion);
            //Assert que comprueba que no hay un campo vacio.
            Assert.IsNotEmpty(rol.Nombre);
            Assert.IsNotEmpty(rol.TipoRol);
            Assert.IsNotEmpty(rol.Descripcion);
            //Assert que comprueba que se realizo bien la insercion.
            Assert.AreEqual(retorno, true);
        }
        #endregion Prueba Unitaria Agregar Cliente

        #region Prueba Modificar Rol
        /// <summary>
        /// Prueba que valida que el Rol se
        /// modifico correctamennnte.
        /// </summary>
        [TestCase]
        public void ModificarRol()
        {
            int idRol = 1;
            string nombreRol = "Gerente";
            string tipoRol = "Equipo de Trabajo";
            string descripcionRol = "Se encarga de todas las responsabilidades del Proyecto.";
            bool retorno = true;

            Rol rol = new Rol(idRol, nombreRol, tipoRol, descripcionRol);
            SqlServerRol serverRol = new SqlServerRol();
            retorno = serverRol.ModificarRol(rol);

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(rol.Id);
            Assert.IsNotNull(rol.Nombre);
            Assert.IsNotNull(rol.TipoRol);
            Assert.IsNotNull(rol.Descripcion);
            //Assert que comprueba que no hay un campo vacio.
            Assert.IsNotEmpty(rol.Nombre);
            Assert.IsNotEmpty(rol.TipoRol);
            Assert.IsNotEmpty(rol.Descripcion);
            //Assert que comprueba que se realizo bien la modificación.
            Assert.AreEqual(retorno, true);
        }
        #endregion

        #region Prueba Consultar Rol
        /// <summary>
        /// Prueba que valida que el rol ha sido
        /// cosultado exitosamente
        /// </summary>
        [TestCase]
        public void PConsultarRol()
        {
            string nombreRol = "Gerente de Proyecto";

            Rol rol = new Rol(nombreRol);
            SqlServerRol serverRol = new SqlServerRol();
            Rol retorno = null;
            retorno = serverRol.ConsultarRol(nombreRol);

            //Assert que comprueba que no hay un campo nulo.
            Assert.IsNotNull(rol.Nombre);
            //Assert que comprueba que no hay un campo vacio.
            Assert.IsNotEmpty(rol.Nombre);
            //Assert que comprueba que se realizo bien la consulta.
            Assert.AreEqual(retorno.ToString(),rol.ToString());
        }
        #endregion Prueba Consultar Rol
    }
}